#include "net_comm.h"

int net_comm_logo = 0;   //网络连接标志

int client_socket;  //TCP客户端通信对象

void *NET_comm(void* arg)
{
    int ret=0;
    // 1、创建TCP客户端通信对象(a、买了一部手机)
    client_socket = socket(AF_INET, SOCK_STREAM, 0);
    if (client_socket < 0)
    {
        perror("创建TCP客户端通信对象失败!\n");
        return NULL;
    }
    
    // 使套接字sockfd关联的地址在套接字关闭后立即释放
    int on = 1;
    setsockopt(client_socket, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));  //开启端口复用功能 

    // 2、绑定信息(b、填写自己的信息,并插卡进去)(客户端可以不写，系统会自动帮你设置)

    // 3、填写服务端的信息(c、输入女朋友的电话信息)
    // struct sockaddr *addr;                           // 旧地址结构体，已经废弃掉了
    struct sockaddr_in addr;                            // 创建一个服务器地址结构体
    addr.sin_family      = AF_INET;                     // 设置地址族为IPv4
    addr.sin_port        = htons(8899);        // 设置服务器的端口号
    addr.sin_addr.s_addr = inet_addr("120.27.148.96");      // 设置服务器的IP地址
    while(1)
    {
        // 4、链接服务端(d、打电话给女朋友)
        int ret_c = connect(client_socket, (struct sockaddr *)&addr, sizeof(addr));
        if (ret_c < 0)
        {
            perror("连接服务器失败\n");
            if(ret<10)
            {
                ret++;
                sleep(2);
                continue;
            }
            printf("连接服务器失败,请检查服务器是否开启\n"); //后面改成消息框
            lv_obj_del(net_workLoading);  //删除加载动画
            WIN1_Init_face(); //重新加载界面
            break;
        }
        else
        {
            printf("连接结服务器成功!\n");              //后面改成消息框
            net_comm_logo=1;
            THREAD_POOL_AddTask(pool, WRITE_comm, NULL); //启动TCP通信线程
            RDWR_get_new(NULL);
            lv_obj_del(net_workLoading);  //删除加载动画
            WIN1_Init_face();
            break;
        }
    }
    return NULL;
}